package com.bird.config;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;

import javax.servlet.Filter;

/**
 * @data 2025/9/15 15:03
 * @author: bird
 * @description: 自定义Servlet，这个是基石 是连接tomcat和mvc的桥梁
 *
 */
public class StartCustomWebApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    /**
     * springContext中相关的beanF
     * // 配置根上下文（业务层、数据层等）
     */
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[]{SpringRootConfig.class};
    }
    /**
     * DispatcherServlet中上下文相关的bean
     *   // 配置Web上下文（控制器、视图解析器等）
     */
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[]{MvcConfig.class};
    }
    /**
     * 方法功能：Servlet请求映射路径
     */
    @Override
    protected String[] getServletMappings() {
        // "/" 意思是拦截所有的请求，就是http发起的请求都会到达这里
        return new String[]{"/"};
    }
    /**
     * 方法功能: 拦截并处理请求的编码
     *
     * @return
     */
    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter encodingFilter=new CharacterEncodingFilter();
        encodingFilter.setEncoding("UTF-8");
        encodingFilter.setForceEncoding(true);
        return  new Filter[]{encodingFilter};
    }
}
